package com.autism.file;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

/**
 * 文件上传服务端
 * <p>
 * 实现步骤：
 * 1.创建一个服务器serverSocket，指定端口号
 * 2.使用serverSocket中的accept方法，获取请求的客户端docket对象
 * 3.使用Socket的getInputStream，获取网络字节输入流
 * 4.判断upload文件夹是否存在
 * 5.创建一个本地字节输出流FileOutPutStream
 * 6.使用网络字节输入流的read读取上传的文件
 * 7.使用本地字节输出流的write，把文件写在硬盘上
 * 8.使用socket获取网络字节输出流对象
 * 9.使用网络字节流的write，回写数据
 * 10.释放资源
 */
public class AutismServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(9000);

        Socket socket = serverSocket.accept();

        InputStream inputStream = socket.getInputStream();

        File file = new File("D:\\upload");
        if (!file.exists()) {
            file.mkdir();
        }

        FileOutputStream fileOutputStream = new FileOutputStream(file + "\\autism.jpg");

        int len = 0;
        byte[] bytes = new byte[1024];
        while ((len = inputStream.read()) != -1) {
            fileOutputStream.write(bytes, 0, len);
        }

        socket.getOutputStream().write("上传成功".getBytes(StandardCharsets.UTF_8));

        fileOutputStream.close();
        socket.close();
        serverSocket.close();
    }
}
